/**
 * 
 */
package dao;

import java.util.ArrayList;

import org.hibernate.Query;
import org.hibernate.Session;

import personne.Personne;

/**
 * @author ahmed
 *
 */
public class DAOPersonneHBM extends DAOHibernate implements DaoPersonne
{

	/* (non-Javadoc)
	 * @see dao.DAOPersonne#get(int)
	 */
	@Override
	public Personne get(int code) throws Exception
	{
		Personne p = null;
		Session session = connect();

		p = (Personne) session.get(Personne.class, code);

		close(session);
		return p;
	}

	/* (non-Javadoc)
	 * @see dao.DAOPersonne#load(java.lang.String)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public ArrayList<Personne> load(String nom) throws Exception
	{
		ArrayList<Personne> liste=new ArrayList<Personne>();
		Session session = connect();

		Query req = session.createQuery("FROM Personne where nom like ?");
		req.setString(0, "%"+nom+"%");
		liste = (ArrayList<Personne>) req.list();

		close(session);
		return liste;
	}

	/* (non-Javadoc)
	 * @see dao.DAOPersonne#loadAll()
	 */
	@SuppressWarnings("unchecked")
	public ArrayList<Personne> loadAll() throws Exception
	{
		ArrayList<Personne>	tab = null;
		Session session = connect();
		
		tab = (ArrayList<Personne>) session.createQuery("FROM Personne").list();
		
		close(session);
		return tab;
	}

	/* (non-Javadoc)
	 * @see dao.DAOPersonne#remove(metier.personne.Personne)
	 */
	@Override
	public void remove(Personne personne) throws Exception
	{
		Session session = connect();
		session.delete(personne);
		personne.setCode(-1);
		close(session);

	}

	/* (non-Javadoc)
	 * @see dao.DAOPersonne#save(metier.personne.Personne)
	 */
	@Override
	public void save(Personne personne) throws Exception
	{
		Session session = connect();
		session.save(personne);
		close(session);

	}

	/* (non-Javadoc)
	 * @see dao.DAOPersonne#saveOrUpdate(metier.personne.Personne)
	 */
	@Override
	public void saveOrUpdate(Personne personne) throws Exception
	{
		Session session = connect();
		session.saveOrUpdate(personne);
		close(session);

	}

}
